import axios from 'axios'
import { Message } from 'element-ui'
import cookie from 'js-cookie'
import loginApi from '~/api/login/login'

// 创建axios实例
const service = axios.create({
  baseURL: 'http://localhost:9999',
  timeout: 12000 // 请求超时时间
})

// http request 拦截器
service.interceptors.request.use(
  config => {
    // 当cookie中获取到了token信息时，则将token放在header中随请求发送给服务端接口
    if (cookie.get('guli-cookie-jwt')) {
      config.headers['token'] = cookie.get('guli-cookie-jwt')
    }

    return config
  },
  error => {
    return Promise.reject(error)
  }
)

// response 拦截器
service.interceptors.response.use(
  response => {
    /**
       * code为非20000是抛错 可结合自己业务进行修改
       */
    const res = response.data
    // 特殊处理错误码：23004，cookie失效就不提醒用户出错，而是清空cookie
    if (res.code === 23004) {
      cookie.set('guli-cookie-jwt', '')
      return response.data
    }
    // 特殊处理错误码：25000，轮询查询用户是否支付，未支付不提醒用户出错
    if (res.code === 25000) {
      return response.data
    }
    // 特殊处理错误码：28004，鉴权失败，用户未登录
    if (res.code === 28004) {
      // 重定向到登录页
      window.location = '/login'
      return
    }
    if (res.code !== 20000) {
      Message({
        message: res.message || 'error',
        type: 'error',
        duration: 5 * 1000
      })

      return Promise.reject('error')
    } else {
      return response.data
    }
  },
  error => {
    console.log('err：' + error) // for debug
    Message({
      message: error.message,
      type: 'error',
      duration: 5 * 1000
    })
    return Promise.reject(error)
  }
)

export default service
